// src/book/dto/list-book.dto.ts
import { Type } from 'class-transformer';
import { IsInt, IsOptional, Max, Min, IsString, IsIn } from 'class-validator';

export class ListBookDto {
  @IsOptional()
  @Type(() => Number)
  @IsInt()
  @Min(1)
  page?: number = 1;

  @IsOptional()
  @Type(() => Number)
  @IsInt()
  @Min(1)
  @Max(100) // 最大100条，防止攻击
  limit?: number = 10;

  @IsOptional()
  @IsString()
  search?: string; // 全局搜索关键词

  @IsOptional()
  @IsIn([
    'id',
    'title',
    'author',
    'publisher',
    'bookid',
    'category',
    'language',
    'created_at',
    'updated_at',
  ])
  sort?: string; // 排序字段白名单（防SQL注入）

  @IsOptional()
  @IsIn(['ASC', 'DESC'])
  order?: 'ASC' | 'DESC' = 'DESC';
}
